using System;
using System.Collections.Generic;
using System.Text;

namespace Liberty.Domain.Kernel
{
    [Serializable]
    public class Address : Peradigm.Framework.Domain.Parties.Address
    {
        /// <summary>
        /// Creates a stubbed address populated with frequently used primitives.  
        /// Other aggregated objects are not populated by this factory method.
        /// </summary>
        /// <returns></returns>
        public static Address TestInstance()
        {
            Address stub = new Address();
            stub.City = "Plano";
            stub.Country = "United States";
            stub.DeliveryAddress = "2300 West Plano Parkway";
            stub.Oid = 12L;
            stub.PostalCode = "75075";
            stub.Province = "Texas";
            stub.SecondaryUnit = "Secondary Unit, AKA Address Line 2";

            return stub;
        }  

        public long Oid
        {
            get { return i_Oid; }
            set { i_Oid = value; }
        }       

        public byte[] Version
        {
            get { return i_Version; }
            set { i_Version = value; }
        }

        public Address()
            : base()
        {
        }

        public Address( string text )
            : base( text )
        {
        }

        public Address( string streetAddress, string cityName, string stateAbbreviation, string zipCode )
            :
            base( streetAddress, cityName, stateAbbreviation, zipCode )
        {
        }

        public Address( string streetAddress, string cityName, string stateAbbreviation, string zipCode, string country )
            :
            base( streetAddress, cityName, stateAbbreviation, zipCode, country )
        {
        }

        public Address( string streetAddress1, string streetAddress2, string cityName, string stateAbbreviation, string zipCode, string country )
            :
            base( streetAddress1, streetAddress2, cityName, stateAbbreviation, zipCode, country )
        {
        }
       
        private long i_Oid;
        private byte[] i_Version;
    }
}
